/*     */ package dm.jdbc.dbaccess;
/*     */ 
/*     */ import dm.jdbc.dataConvertion.Convertion;
/*     */ import dm.jdbc.xa.DmdbXid;
/*     */ import javax.transaction.xa.XAException;
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ public class DmMsgRecv
/*     */ {
/*  27 */   byte[] buffer = null;
/*     */   
/*  29 */   byte[] varBuffer = null;
/*     */   
/*  31 */   private int errlen = 0;
/*     */   
/*  33 */   private boolean m_fromStandby = false;
/*     */   
/*     */ 
/*     */ 
/*     */   public DmMsgRecv()
/*     */   {
/*  39 */     this.varBuffer = new byte['羀'];
/*  40 */     this.buffer = this.varBuffer;
/*     */   }
/*     */   
/*     */   void setFromStandby(boolean fromStandby) {
/*  44 */     this.m_fromStandby = fromStandby;
/*     */   }
/*     */   
/*     */   public boolean getFromStandby() {
/*  48 */     return this.m_fromStandby;
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public void setBuffer(byte[] buf)
/*     */   {
/*  58 */     if (buf == null) {
/*  59 */       return;
/*     */     }
/*  61 */     if (buf.length > 32640) {
/*  62 */       this.varBuffer = buf;
/*     */     } else {
/*  64 */       this.varBuffer = new byte['羀'];
/*  65 */       System.arraycopy(buf, 0, this.varBuffer, 0, buf.length);
/*     */     }
/*  67 */     this.buffer = this.varBuffer;
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public void setBuffer(int size)
/*     */   {
/*  77 */     if (size > 32640) {
/*  78 */       this.varBuffer = new byte[size];
/*  79 */       System.arraycopy(this.buffer, 0, this.varBuffer, 0, this.buffer.length);
/*     */     } else {
/*  81 */       this.varBuffer = new byte['羀'];
/*     */     }
/*     */     
/*  84 */     this.buffer = this.varBuffer;
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public int getBufLength()
/*     */   {
/*  93 */     return this.buffer.length;
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   private final long getInt(int size, int offset)
/*     */   {
/* 106 */     long n = 0L;
/* 107 */     int p = offset + size;
/*     */     
/* 109 */     for (int i = 0; i < size; i++) {
/* 110 */       long b = 0xFF & this.buffer[(--p)];
/* 111 */       n = b | n << 8;
/*     */     }
/*     */     
/* 114 */     return n;
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public final byte getByte(int offset)
/*     */   {
/* 125 */     return this.buffer[offset];
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public final int getShort(int offset)
/*     */   {
/* 136 */     return Convertion.getUShort(this.buffer, offset);
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public final long getInt(int offset)
/*     */   {
/* 147 */     return Convertion.getUInt(this.buffer, offset);
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public final long getLong(int offset)
/*     */   {
/* 159 */     long l = getInt(8, offset);
/* 160 */     return l;
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public final String getString(int offset, int bytelen)
/*     */   {
/* 173 */     return Convertion.getString(this.buffer, offset, bytelen);
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public final String getString(int offset, int byteLen, String charsetName)
/*     */   {
/* 186 */     return Convertion.getString(this.buffer, offset, byteLen, charsetName);
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public final byte[] getBytes(int offset, int len)
/*     */   {
/* 199 */     return Convertion.getBytes(this.buffer, offset, len);
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public final byte[] getBytes(int offset, int len, String charsetName, String destCharsetName)
/*     */   {
/* 213 */     return Convertion.getBytes(this.buffer, offset, len, charsetName, 
/* 214 */       destCharsetName);
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public final long getOffsetOfPrintMsg()
/*     */   {
/* 232 */     return getInt(39);
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public final byte getCRC()
/*     */   {
/* 241 */     return getByte(19);
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public final boolean checkCRC()
/*     */   {
/* 250 */     byte recv = res_get_crc();
/* 251 */     byte calc = calculateCRC();
/*     */     
/* 253 */     return recv == calc;
/*     */   }
/*     */   
/*     */   public boolean getUnname(int offset) {
/* 257 */     if (getInt(offset + 18) != 0L) {
/* 258 */       return true;
/*     */     }
/* 260 */     return false;
/*     */   }
/*     */   
/*     */   public short getParamType(int offset) {
/* 264 */     return (short)getShort(offset + 22);
/*     */   }
/*     */   
/*     */   public boolean getNullable(int offset) {
/* 268 */     return getInt(offset + 12) != 0L;
/*     */   }
/*     */   
/*     */   public byte getParamRecommandType(int offset)
/*     */   {
/* 273 */     short tmp = (short)getShort(offset + 16);
/* 274 */     if ((tmp & 0x8) != 0) {
/* 275 */       return 2;
/*     */     }
/* 277 */     return 1;
/*     */   }
/*     */   
/*     */   public short getItemFlag(int offset) {
/* 281 */     return (short)getShort(offset + 16);
/*     */   }
/*     */   
/*     */   public int getFixSize(int offset) {
/* 285 */     return (int)getInt(offset + 32);
/*     */   }
/*     */   
/*     */   public short getNameLen(int offset) {
/* 289 */     return (short)getShort(offset + 24);
/*     */   }
/*     */   
/*     */   public short getTypeNameLen(int offset) {
/* 293 */     return (short)getShort(offset + 26);
/*     */   }
/*     */   
/*     */   public short getTableLen(int offset) {
/* 297 */     return (short)getShort(offset + 28);
/*     */   }
/*     */   
/*     */   public short getSchemaLen(int offset) {
/* 301 */     return (short)getShort(offset + 30);
/*     */   }
/*     */   
/*     */   public int getdType(int offset) {
/* 305 */     return (int)getInt(offset + 0);
/*     */   }
/*     */   
/*     */   public int getPrec(int offset) {
/* 309 */     return (int)getInt(offset + 4);
/*     */   }
/*     */   
/*     */   public int getScale(int offset) {
/* 313 */     return (int)getInt(offset + 8);
/*     */   }
/*     */   
/*     */   public byte[] getBuffer() {
/* 317 */     return this.buffer;
/*     */   }
/*     */   
/*     */   public int getErrlen() {
/* 321 */     getErrorInfo(null);
/*     */     
/* 323 */     return this.errlen;
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */   public String getErrorInfo(String charsetName)
/*     */   {
/* 330 */     int offset = 64;
/*     */     
/*     */ 
/* 333 */     long len = getInt(offset);
/* 334 */     offset += 4;
/* 335 */     offset = (int)(offset + len);
/*     */     
/*     */ 
/* 338 */     len = getInt(offset);
/* 339 */     offset += 4;
/* 340 */     offset = (int)(offset + len);
/*     */     
/*     */ 
/* 343 */     len = getInt(offset);
/* 344 */     offset += 4;
/* 345 */     offset = (int)(offset + len);
/*     */     
/*     */ 
/* 348 */     len = getInt(offset);
/* 349 */     offset += 4;
/*     */     
/* 351 */     this.errlen = ((int)(offset + len - 64L));
/*     */     
/* 353 */     if ((charsetName == null) || ("" == charsetName)) {
/* 354 */       return null;
/*     */     }
/*     */     
/* 357 */     if (len > 2147483647L) {
/* 358 */       len = 2147483647L;
/*     */     }
/* 360 */     return Convertion.getString(this.buffer, offset, (int)len, charsetName);
/*     */   }
/*     */   
/*     */   public int res_get_compress() {
/* 364 */     return getByte(18);
/*     */   }
/*     */   
/*     */   public int res_get_stmtid() {
/* 368 */     return (int)getInt(0);
/*     */   }
/*     */   
/*     */   public short res_get_ret() {
/* 372 */     return (short)getShort(4);
/*     */   }
/*     */   
/*     */   public long res_get_len() {
/* 376 */     return getInt(6);
/*     */   }
/*     */   
/*     */   public void res_set_len(int len) {
/* 380 */     setInt(len, 6);
/*     */   }
/*     */   
/*     */   public void setInt(int val, int offset) {
/* 384 */     byte[] ret = Convertion.IntToByteArray(val);
/*     */     
/* 386 */     setBytes(ret, 0, offset, ret.length);
/*     */   }
/*     */   
/*     */   public void setBytes(byte[] src, int src_offset, int offset, int len) {
/* 390 */     System.arraycopy(src, src_offset, this.buffer, offset, len);
/*     */   }
/*     */   
/*     */   public int res_get_sqlcode() {
/* 394 */     return (int)getInt(10);
/*     */   }
/*     */   
/*     */   public byte res_get_crc() {
/* 398 */     return getByte(19);
/*     */   }
/*     */   
/*     */   public final void setCRC(byte crc) {
/* 402 */     byte[] ret = new byte[1];
/* 403 */     ret[0] = crc;
/*     */     
/* 405 */     System.arraycopy(ret, 0, this.buffer, 19, ret.length);
/*     */   }
/*     */   
/*     */   public int res_startup_get_encrypt_type()
/*     */   {
/* 410 */     return (int)getInt(20);
/*     */   }
/*     */   
/*     */   public int res_startup_get_serial() {
/* 414 */     return (int)getInt(24);
/*     */   }
/*     */   
/*     */   public int res_startup_get_ucflag() {
/* 418 */     return (int)getInt(28);
/*     */   }
/*     */   
/*     */   public int res_startup_get_cmpflag() {
/* 422 */     return (int)getInt(32);
/*     */   }
/*     */   
/*     */   public byte res_startup_get_rs_bdta_flag() {
/* 426 */     return getByte(42);
/*     */   }
/*     */   
/*     */   public byte res_startup_get_comm_enc_flag() {
/* 430 */     return getByte(41);
/*     */   }
/*     */   
/*     */   public byte res_startup_get_gen_keypair_flag() {
/* 434 */     return getByte(40);
/*     */   }
/*     */   
/*     */   public long res_login_get_max_data_len()
/*     */   {
/* 439 */     return getInt(20);
/*     */   }
/*     */   
/*     */   public int res_login_get_max_session() {
/* 443 */     return (int)getInt(24);
/*     */   }
/*     */   
/*     */   public byte res_login_get_ddl_auto_commit() {
/* 447 */     return getByte(28);
/*     */   }
/*     */   
/*     */   public int res_login_get_iso_level() {
/* 451 */     return (int)getInt(29);
/*     */   }
/*     */   
/*     */   public byte res_login_get_str_case_sensitive() {
/* 455 */     return getByte(33);
/*     */   }
/*     */   
/*     */   public byte res_login_get_back_slash() {
/* 459 */     return getByte(34);
/*     */   }
/*     */   
/*     */   public int res_login_get_svr_stat() {
/* 463 */     return getShort(37);
/*     */   }
/*     */   
/*     */   public int res_login_get_svr_mode() {
/* 467 */     return getShort(35);
/*     */   }
/*     */   
/*     */   public byte res_login_get_const_para_opt() {
/* 471 */     return getByte(39);
/*     */   }
/*     */   
/*     */   public int res_login_get_db_tz() {
/* 475 */     return getShort(40);
/*     */   }
/*     */   
/*     */   public byte res_login_get_new_lob_flag() {
/* 479 */     return getByte(43);
/*     */   }
/*     */   
/*     */   public int res_login_get_resp_standby() {
/* 483 */     return getByte(42);
/*     */   }
/*     */   
/*     */ 
/*     */   public byte res_alloc_stmt_get_new_col_desc_flag()
/*     */   {
/* 489 */     return getByte(20);
/*     */   }
/*     */   
/*     */ 
/*     */   public int res_prepare_get_trans_status()
/*     */   {
/* 495 */     return (int)getInt(34);
/*     */   }
/*     */   
/*     */   public short res_prepare_get_ret_type() {
/* 499 */     return (short)getShort(20);
/*     */   }
/*     */   
/*     */   public short res_prepare_get_param_num() {
/* 503 */     return (short)getShort(22);
/*     */   }
/*     */   
/*     */   public short res_prepare_get_col_num() {
/* 507 */     return (short)getShort(24);
/*     */   }
/*     */   
/*     */   public long res_prepare_get_rowid() {
/* 511 */     return getLong(26);
/*     */   }
/*     */   
/*     */   public short res_execute_get_ret_type()
/*     */   {
/* 516 */     return (short)getShort(20);
/*     */   }
/*     */   
/*     */   public short res_execute_get_col_num() {
/* 520 */     return (short)getShort(22);
/*     */   }
/*     */   
/*     */   public long res_execute_get_row_num() {
/* 524 */     return getLong(24);
/*     */   }
/*     */   
/*     */   public short res_execute_get_param_num() {
/* 528 */     return (short)getShort(32);
/*     */   }
/*     */   
/*     */   public byte res_execute_get_rs_updatable() {
/* 532 */     return getByte(34);
/*     */   }
/*     */   
/*     */   public int res_execute_get_fetched_rows() {
/* 536 */     return (int)getInt(35);
/*     */   }
/*     */   
/*     */   public long res_execute_get_rowid() {
/* 540 */     return getLong(43);
/*     */   }
/*     */   
/*     */   public byte res_execute_rs_bdta_flag() {
/* 544 */     return getByte(43);
/*     */   }
/*     */   
/*     */   public short res_execute_rs_rowid_colindex() {
/* 548 */     return (short)getShort(44);
/*     */   }
/*     */   
/*     */   public int res_execute_get_exid() {
/* 552 */     return (int)getInt(51);
/*     */   }
/*     */   
/*     */   public int res_rsCache_offset() {
/* 556 */     return (int)getInt(55);
/*     */   }
/*     */   
/*     */   public boolean res_execute_rowcnt_flag() {
/* 560 */     byte bt = getByte(59);
/*     */     
/* 562 */     if ((bt & 0x1) == 1) {
/* 563 */       return true;
/*     */     }
/* 565 */     return false;
/*     */   }
/*     */   
/*     */   public boolean res_execute_retid_flag() {
/* 569 */     byte bt = getByte(59);
/*     */     
/* 571 */     if (((bt & 0x2) >> 1 == 1) || ((bt & 0x4) >> 2 == 1)) {
/* 572 */       return true;
/*     */     }
/* 574 */     return false;
/*     */   }
/*     */   
/*     */   public int res_execute_trans_status() {
/* 578 */     return (int)getInt(60);
/*     */   }
/*     */   
/*     */   public long res_fetch_get_row_count() {
/* 582 */     return getLong(20);
/*     */   }
/*     */   
/*     */   public int res_fetch_get_ret_count() {
/* 586 */     return (int)getInt(28);
/*     */   }
/*     */   
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   public final byte calculateCRC()
/*     */   {
/* 595 */     byte crc = this.buffer[0];
/* 596 */     byte times = 19;
/* 597 */     byte single = this.buffer[1];
/*     */     
/* 599 */     for (byte i = 1; i < times; i = (byte)(i + 1)) {
/* 600 */       single = this.buffer[i];
/* 601 */       crc = (byte)(crc ^ single);
/*     */     }
/* 603 */     return crc;
/*     */   }
/*     */   
/*     */   public int res_get_xa_sqlcode()
/*     */   {
/* 608 */     return (int)getInt(64);
/*     */   }
/*     */   
/*     */   public int res_get_xa_recovery_endflag() {
/* 612 */     return (int)getInt(68);
/*     */   }
/*     */   
/*     */   public int res_get_xa_recovery_xid_count() {
/* 616 */     return (int)getInt(72);
/*     */   }
/*     */   
/*     */   public DmdbXid res_get_xa_recovery_xid(int index) throws XAException {
/* 620 */     int startIndex = 76 + 140 * index;
/* 621 */     return new DmdbXid((int)getInt(startIndex), getBytes(startIndex + 12, 
/* 622 */       (int)getInt(startIndex + 4)), getBytes(startIndex + 12 + 
/* 623 */       64, (int)getInt(startIndex + 8)));
/*     */   }
/*     */ }


/* Location:              D:\Program Files\DBMS_20150813\jdbc\Dm7JdbcDriver17.jar!\dm\jdbc\dbaccess\DmMsgRecv.class
 * Java compiler version: 2 (46.0)
 * JD-Core Version:       0.7.1
 */